
#ifndef UTILS_UNORDERED_H
#define UTILS_UNORDERED_H

#if defined(UTILS_ALL_BOOST_TR1)
#if !defined(UTILS_UNORDERED_BOOST_TR1) \
    && !defined(UTILS_UNORDERED_BOOST) \
    && !defined(UTILS_UNORDERED_STANDARD) 
#define UTILS_UNORDERED_BOOST_TR1
#endif
#elif defined(UTILS_ALL_BOOST)
#if !defined(UTILS_UNORDERED_BOOST_TR1) \
    && !defined(UTILS_UNORDERED_BOOST) \
    && !defined(UTILS_UNORDERED_STANDARD) 
#define UTILS_UNORDERED_BOOST
#endif
#elif defined(UTILS_ALL_STANDARD)
#if !defined(UTILS_UNORDERED_BOOST_TR1) \
    && !defined(UTILS_UNORDERED_BOOST) \
    && !defined(UTILS_UNORDERED_STANDARD) 
#define UTILS_UNORDERED_STANDARD
#endif
#else
#if !defined(UTILS_UNORDERED_BOOST_TR1) \
    && !defined(UTILS_UNORDERED_BOOST) \
    && !defined(UTILS_UNORDERED_STANDARD) 
#define UTILS_UNORDERED_STANDARD_TR1
#endif
#endif

#if defined(UTILS_UNORDERED_BOOST_TR1)
#include <boost/tr1/unordered_map.hpp>
#include <boost/tr1/unordered_set.hpp>
#include <boost/tr1/functional.hpp>
namespace utils {
  using std::tr1::unordered_map;
  using std::tr1::unordered_multimap;
  using std::tr1::unordered_set;
  using std::tr1::unordered_multiset;
  using std::tr1::hash;
}
#elif defined(UTILS_UNORDERED_BOOST)
#include <boost/unordered_map.hpp>
#include <boost/unordered_set.hpp>
namespace utils {
  using ::boost::unordered_map;
  using ::boost::unordered_multimap;
  using ::boost::unordered_set;
  using ::boost::unordered_multiset;
  using ::boost::hash;
}
#elif defined(UTILS_UNORDERED_STANDARD)
#include <unordered_map>
#include <unordered_set>
namespace utils {
  using std::unordered_map;
  using std::unordered_multimap;
  using std::unordered_set;
  using std::unordered_multiset;
  using std::hash;
}
#elif defined(UTILS_UNORDERED_STANDARD_TR1)
#include <tr1/unordered_map>
#include <tr1/unordered_set>
namespace utils {
  using std::tr1::unordered_map;
  using std::tr1::unordered_multimap;
  using std::tr1::unordered_set;
  using std::tr1::unordered_multiset;
  using std::tr1::hash;
}
#endif

#endif // UTILS_UNORDERED_H

